package com.bookstore.web;

import java.util.List;

/**
 * @ClassName: Page
 * @Description: TODO(封装翻页信息的 Page 类)
 * @author Administrator liy
 * @date 2017年5月25日
 * @param <T>
 */
public class Page<T> {
    // 当前页
    private int pageNo;

    // 当前页的list
    private List<T> list;

    // 每页显示多少条记录
    private int pageSize = 5;

    // 共有多少记录
    private long totalItemNumber;

    // 构造器中需要对pageNo进行初始化
    public Page(int pageNo) {
        super();
        this.pageNo = pageNo;
    }

    // 需要校验一下,超出范围的页码重赋值
    public int getPageNo() {
        if (pageNo < 0)
            pageNo = 1;
        if (pageNo > getTotalPageNumber()) {
            pageNo = getTotalPageNumber();
        }

        return pageNo;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setList(List<T> list) {
        this.list = list;
    }

    public List<T> getList() {
        return list;
    }

    // 获取总页数
    public int getTotalPageNumber() {
        int totalPageNumber = (int) totalItemNumber / pageSize;

        if (totalItemNumber % pageSize != 0) {
            totalPageNumber++;
        }

        return totalPageNumber;
    }

    public void setTotalItemNumber(long totalItemNumber) {
        this.totalItemNumber = totalItemNumber;
    }

    // 是否有下一页
    public boolean isHasNext() {
        if (getPageNo() < getTotalPageNumber()) {
            return true;
        }
        return false;
    }

    // 是否有前一页
    public boolean isHasPrev() {
        if (getPageNo() > 1) {
            return true;
        }
        return false;
    }

    // 如果不是首页获取上一页
    public int getPrevPage() {
        if (isHasPrev()) {
            return getPageNo() - 1;
        }
        return getPageNo();
    }

    // 如果不是末页获取下一页
    public int getNextPage() {
        if (isHasNext()) {
            return getPageNo() + 1;
        }
        return getPageNo();
    }
}
